20 research outputs found

    Java and scala's type systems are unsound: the existential crisis of null pointers

    Get PDF
    We present short programs that demonstrate the unsoundness of Java and Scala's current type systems. In particular, these programs provide parametrically polymorphic functions that can turn any type into any type without (down) casting. Fortunately, parametric polymorphism was not integrated into the Java Virtual Machine (JVM), so these examples do not demonstrate any unsoundness of the JVM. Nonetheless, we discuss broader implications of these findings on the field of programming languages

    A rigorous examination of sequentially expressed algorithms to reveal their concurrency hierarchies

    No full text
    The methods of Scott-Strachey semantics are applied to the problem of writing programs for parallel computers, using serial languages such as are in common use, with compilers which attempt to discover and exploit potential parallelism in independent sections of program. A mathematical model of a parallel computer is first developed in detail, and in chapters 1 and 2 three basic conditions are derived which together ensure determinacy of operation in a parallel machine, first in purely semantic terms, then in a form more related to the syntactic structure of a language. The remaining chapters apply these basic conditions to three actual languages, showing how the conditions can be reduced to purely syntactic (hence compiler evaluable) tests. Chapter 3 uses a very simple language to introduce the techniques required. Chapter 4 adds procedures, with all the complexity they involve. Chapter 5 considers the rather more fruitful area of arrays and loops. The result, in all but the most trivial cases, is a rather complicated set of conditions which, while they produce the desired effect, suggest that today's commonly used languages are not the most suitable method of exploiting parallel computers.</p

    Continuations, functions and jumps

    No full text
    corecore